Знаю такой баг. Вылечтл удалением из карты всего импорта-мусора и переводов путей импорта на источник из кампании.
Т.е. этот баг возникает при очень большом весе впихиваемой в кампанию карты.
PT153:
Вспомнил про один баг. Есть сделать PauseTimer() на периодический таймер, а потом на этой таймер использовать ResumeTimer(), то таймер повторит свой цикл лишь раз, а потом остановится.
сам не пользуюсь ResumeTimer, но щас проверил, действительно не работает что-то. Видимо, это работает только тогда, когда таймер не до конца дошел.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
Можно было сделать по-другому.
Еще не понимаю, зачем нам нужен периодический таймер.
можем логическую переменную b завести и таймер t
нанес противник урон = проверяем логическую переменную, если истина, запускаем одноразовый таймер, и ставим ложь в логической переменной = false
if b then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.?mdl",u,"origin"))
call UnitDamageTarget(udg_u,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call TimerStart(udg_t,0.5,false,function t3a)
set b = false
endif
когда таймер запустится
function t3a takes nothing returns nothing
call PauseTimer(udg_t)
set b = true
endfunction
думаю все что надо это call ResumeTimer() заменить на call TimerStart()
Вот условие на проверку баффа. Но тут может быть проблема, если у тебя есть станящие способности, которые используют не этот бафф.
Но мой способ, предложенный выше, также должен работать, причём независимо от того, какой станящий бафф наложен.
Событие: Юнит умирает.
Условие: Тип юнита (Убивающий юнит) = Огр
Действие: Установить Custom Value Убивающего юнита = Custom Value Убивающего юнита +1
Если Custom Value Убивающего юнита = 3, то заменить Убивающего юнита на Циклопа.
По умолчанию Custom Value каждого юнита равно нулю, если триггерами не менять.
Кривоватая подгрузка, удалять не обязательно. Лучше юзать preload без этаких костылей, темболее в JASS есть механизмы автоматического создания pld скриптов.
Оба файла удаляются, потому что ты импортируешь их в карту через программу и не добавляешь данные о файлах в файл импорта(war3map.imp). При сохранении карты в редакторе архив пересобирается, и в него добавляются сторонние файлы, которые сохранены в том самом файле импорта. Поэтому используй стандартный менеджер импорта в редакторе.
еще можно кислотной бомбой алхимика
у нежити есть death coil
огненная стрела (авто-каст)
у медузы есть разветвленная молния (мб можно настроить)
еще есть паразит
Группы юнитов + хэш или структуры. При касте спелла берешь кастера, берешь его ID, проверяешь не записана ли группа в какой-либо из ячеек. Если нет - создаешь группу и записываешь её в ячейку. При смерти юнита делаешь проверку не записана ли по его ID группа юнитов - если записана - удаляешь его и проверяешь количество юнитов в группе и если оно равно 0 - удаляешь группу. Естественно хэш тоже чистишь всюду где нужно.
Это звучит как "Сделайте мне пожалуйста систему формаций". Чтобы научить тебя как это сделать придётся потратить несколько десятков часов. И тут 2 варианта: либо ты будешь читать статьи и выучишь всё сам, либо обращайся к отдельным пользователям и проси о приватных, платных, уроках в частном порядке.
Вопрос вообще ни о чём. То, о чём ты спрашиваешь делается за 20-30 минут + несколько часов на всякие плюшки и дебаг (в худшем случае).
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
Таймеры одни из самых легких обьектов в игре, они меньше нагружают движок и требуют куда меньше пямяти чем триггер, но таймеры не всегда удобны, т.к триггеры более универсальны если речь идет о триггерных заклинаниях.
Если вы про доту, нет, разве что некоторые кривые участки которые и так переделывать.
триггер точно так же создает таймер и ждет его. Если у тебя нет других условий, то таймер лучше, а если у тебя там полдсчет срабатываний и т.п. - то триггер
в функци fa GetExpiredTimer() и будет текущим таймером, там надо прописать условия остановки, проблема с передачей туда юнита через ХТ? SaveUnitHandle(hash, GetHandleID(t),0,unit), а в fa выгрузить его, тут проблема?
Посмотрел 4 триггера, один удалил, остальные кардинально переделал. Проблема была из-за того, что ты установил массиву таймеров размер 1, а это таймер[0] и таймер[1], у пауков же был таймер[2], для юнитов или целочисленных переменных такое превышение размера массива допустимо, но видимо не для таймеров.
Во-первых, не надо ставить действие Ничего не делать, так как это просто мусор. Во-вторых, переделал триггеры спавна так, чтобы они каждый раз проверяли количество игроков и замедляли спавн, если кто ливнёт. В-третьих, посмотри, как в 004 теперь группа игроков назначается, если тебе это не подходит, а хочется добавлять и компьютерных игроков, в условии надо поменять Игрок = Человек на Игрок не равен Игрок 6 и Игрок 7. В-четвёртых, сильно много утечек в триггерах, их просто поленился убрать. Утечки могут вызвать дикие лаги при продолжительной игре.
Короче, сам посмотришь и вопросы задашь, если будут.
там есть про обычный редактор аи (для мили)
и про аи для арен/дот и прочего
если хочешь самообучение то изучай прелоад (для сохранения данных) и машинное обучение (например нейронные сети)
повторю опять свой вопрос
у тебя в папке есть файлы формата mpq?
если есть то открой их другим архиватором
если нету то это твои проблемы и никто тебе не поможет
Нормально экспортирую неодексом из восьмого и одиннадцатого макса. Экспортирует статичную модель? Перед экспортом нужно ведь выделить не только саму модельку, но ещё и кости.
Оказывается можно, просто mdlvis неправильно работает с нормалями, в war3 model editor'е всё корректно отображается.
Чтобы избежать изменение направления нормалей, просто не надо сохранять модель в mdlvis'е.
для блендера есть только один плагин - импортёр...
который глючный и совсем негодный...
напрямую конвертить не получится...
уж тем более с анимациями...
есть вариант конверта в милкшейп (опять че через сторонний аддон), а оттуда в .мдх
конвертит хорошо, с костями, но анимацию убивает...
есть NeoDex для 3dsMax, в котором по плану можно делать всё и конвертить напрямую в .мдх...
повторю опять свой вопрос
у тебя в папке есть файлы формата mpq?
если есть то открой их другим архиватором
если нету то это твои проблемы и никто тебе не поможет
Smart096, баг только в этой карте?
в новых картах бага нету?
если да то стоит проверить импортируемые модели и текстуры (мб часть битая)
но с вероятностью в 60% проблема в системе ибо было много жалоб на баги в вин10
Там короче когда я воду создавал, то криво земля шла... Как бы это объяснить... Тыкаю создать воду - рядом создаётся земля...
Пришлось как-то скрыть в текстурах растений этот баг.
Это из-за него может быть дисинхрон?
Нет. Это не баг, а корявый ланд дизайн и из за этого дропать не будет. Уверен на 99%, что десинх кроется в "GetLocalPlayer"
Анихак лаунчер заточен под борьбу с картой лича, поэтому не дает запускать все карты с мемхаком, пока есть возможноть это обойти - моя карта яркий пример, а так инфы подробной в паблик никто не сливал чтобы ракап не сделал апгрейд защиты...
Идеальный вариант чтобы игрок сам мог решать, нужно ли ему это. Сделай, если будет смотреться неплохо. И каким то образом запилить возможность выключения этой фичи.
Скорее всего бага в хроме... лично такой проблемы не наблюдаю. Да яндекс засылает разные запросы, для отслеживания длительности сессии. Это нам помогает для планирования нового UX. Попробуй сбросить кеш.
Конечно много мороки. Нужно создать предмет для каждого спелла. Для предмета задать id-код тот же что и в спела. Если id будет одинаковый, то описание, название и картинка предмета будет как у спелла. Если создать другое id, то нужно самому указывать пиктограммы, описание и название. Всем предметам даешь особенность использовать сразу или нет (на твой выбор). Всем предметам даешь нестандартную способность-пустышку. Дальше создаешь глобальные переменные для каждого героя твоей карты, в которые будут записываться id-способностей. Потом создаешь отдельный триггер для изучения нового или улучшение спелла. Событие "Юнит использует предмет". Условие "Классификация предмета == Усиливающие". (Так мы будем классифицировать предметы для изучения спеллов). Дальше нужно узнать id способности, которую хотят выучить. Если id ваших предметов такие же как у спеллов, то просто в переменную id способности записываешь id триггерного предмета. Если нет, то нужно через много условий типа "Если предмет равно == Благодать, то в переменную spell записать 'AHhb' ". Это много мороки. Потом проверяешь с глобальными переменными. Если у героя уже есть такой спелл, то нужно повысить его уровень. Если такого спелла нету, то удалить предыдущий спелл и дать этот.
Проще сразу сделать триггено, торнадо вроде вручается абилка чтобы он сам ходил.
Канал с временем каста и обычный суммон, так же триггер с событием юнит завершил каст, дейсвтие найти вызванного им юнита и убить.
И событие юнит умирает, действие запаузить и тут же снять паузу с кастующего юнита. при услови что его текущий приказ равен - кастовать твою абилку.
Все просто.
Astra, очень багано
так как после последней атаки может многое изменится
так же урон при событие юнит получает урон зависит от брони и прочих резистов
если юнит с уроном 100 нанёс удар по врагу с физ резистом 50% а потом получил бафф/предмет на +100 урона то скилом нанесёт 50 урона хотя должен был бы нанести 200
тут нужно юзать бд
при касте скила брать из бд начальный урон юнита, бонусы предметов и бонусы всех бафов
тема кстати уже много раз поднималась
и каждый раз все заканчивалось тем что афтар забивал на подобную систему либо писал "вы все нубы/тролли и не знаете/не хотите сказать как сделать это легко и просто"
ибо подобная система требует кучи кода и как минимум 30 прочтённых статей по jass
вот статья о бд
Poma, и что с того?
Самый простой и внезапно рабочий способ - делаем предмет на основе зелья неуязвимости, работающий по правилам руны - без перезарядки и автоматически применяющийся.
А дальше - для юнитов без геройского инвентаря даем геройский инвентарь, даем зелье(предмет), убираем геройский инвентарь. Для героев - просто даем зелье.
Единственный минус - не работает для юнитов у которых есть инвентарь, но не геройский, а такой что не дает использовать предметы. Но это тоже решаемо, в принципе.
Неуязвимость проверяют через даммика с атакой, через приказ, сможет ли атаковать или нет, просто проверка выполнения приказа. Так же пытаются нанести урон и смотрят сколько он отнял здоровья, так можно и определить неуязвимость и вычислить резист юнита к конкретному типу урона.
Я ловлю фаталы в своей кампании каждое 10 сохранение и переделываю утраченный прогресс каждый раз на протяжении последних 3 лет разработки. Не говори о том, как тебе будет сложно переделывать все заново. Не делал резервные копии - сам виноват. Теперь будешь делать.
А по факту ты не залил карту
И да, через любой mpq можно вытащить карту из файла кампании
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду. Кампания - это пак карт.
Второй комп сломан поэтому проверить не могу, почему у меня подозрение, что оно должно работать.... Хотя могу и ошибаться, нормально делал карты года 2 назад.
Если ты открыл доту мпкью-редактором и похимичил там - эторедактор делает архив карты примерно на 100 кб больше, так что возможно, что и правда слишком большой вес.
Я хз зачем ты лезешь в эти карты, но кириллица занимает 2 символа, а не 1 для справки. Больше добавить нечего.
ты ошибаешься
OrderId2String('Aeye') возвращает "" (пустая строка) т.к. приказ 'Aeye' не имеет строкового представления
"order=" + "" = "order="
всё работает
Bravotan, вот список функций (так же есть в теме с мх)
Функций очень много, некоторые работают своеобразно читайте тему с мх и задавайте там вопросы по функциям.
Нет. Я пока хочу достроить карту на GUI, думаю мне осталось дней 10-30 работать, а буду ли следующую делать - под вопросом. Не хочется тратить время на изучение jass из-за пустяка! Однако Я использовал Custom Script, но это было содрано с одного сайта, а вот чтобы делать самому нужно сначала полностью изучить язык. Либо знаю, либо нет, чуть-чуть не считается!
Что касается wait, то если не это то что тогда?
Опытным путём сам установил что в процесс ничего не вклинивается. Можно использовать Триггер как Функцию и ссылаться на него в другом Триггере. По сути, это и есть функция, если глянуть на jass. Вопрос закрыт.
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
для того что бы пикать юнитов с москитами нужно провернуть один несложный фокус
при создании такого типа даммиков заносишь их в группу
в нужный момент обращаешься в группе и отнимаешь у даммиков москиты
пикаешь как обычных юнитов
обращаешься к группе и возвращаешь им москитов
Нет, способности группировать можно только а уровне спеллбука.
Но.
можно присваивать способность в переменную с массивом, к примеру ability[n+1], где n - целое число для группы. И потом в нужный момент удалять циклом все способности. Минус в том, что на каждую группу нужно будет держать свое целое число
Только ручное применение. Этот параметр определяет как будет использоватся заклинание если отдать приказ сразу группе юнитов с этой способностью. Если эта галка стоит, то способность использует только один из группы, если нет - то сразу вся группа.
У остальных насколько я знаю, захардкожено в движке.
» WarCraft 3 / Очередные проблемы с расположением декораций
» WarCraft 3 / Простые триггеры.
» WarCraft 3 / Preload
» WarCraft 3 / CommandStrings.txt
» WarCraft 3 / Вопрос по способностям с превращениями.
» WarCraft 3 / Вывод в файл
» WarCraft 3 / Отравленный кинжал
» WarCraft 3 / Так почему же юнит удаляется?
» WarCraft 3 / Двойной инвентарь
» WarCraft 3 / ТАймер
» WarCraft 3 / События WarCraft 1
» WarCraft 3 / Экспорт моделей.
» WarCraft 3 / Проблема с Гареной
» WarCraft 3 / Музыкальное сопровождение при наборе игроков
» Администрация XGM / Реклама на сайте
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Как триггерно сделать юнита неуязвимым?
» WarCraft 3 / Помогите с решением
» WarCraft 3 / Союз Рас
» WarCraft 3 / Конверт
» WarCraft 3 / Проблема с предметами в редакторе
» WarCraft 3 / Карта не работает в локальной сети.
» WarCraft 3 / Как работает функция ?!
» WarCraft 3 / Группа Способностей